]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
ripple: Split animation
authorFlorian Müllner <fmuellner@gnome.org>
Sat, 10 Jun 2017 03:55:10 +0000 (05:55 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 6 Aug 2019 18:50:43 +0000 (20:50 +0200)
Similar to the previous patch, splitting the existing tween into two
will allow us to use implicit animations.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/22

js/ui/ripples.js

index 1ff424cbad6d073682d4abe4c086790ff0aeff9f..cbdfaaf7ffcde8c4f68267c6274cedc9bafd4670 100644 (file)
@@ -39,25 +39,26 @@ var Ripples = class Ripples {
         // We draw a ripple by using a source image and animating it scaling
         // outwards and fading away. We want the ripples to move linearly
         // or it looks unrealistic, but if the opacity of the ripple goes
-        // linearly to zero it fades away too quickly, so we use Tweener's
-        // 'onUpdate' to give a non-linear curve to the fade-away and make
+        // linearly to zero it fades away too quickly, so we use a separate
+        // tween to give a non-linear curve to the fade-away and make
         // it more visible in the middle section.
 
         ripple.x = this._x;
         ripple.y = this._y;
-        ripple._opacity = startOpacity;
         ripple.visible = true;
         ripple.opacity = 255 * Math.sqrt(startOpacity);
         ripple.scale_x = ripple.scale_y = startScale;
         ripple.set_translation( - this._px * ripple.width, - this._py * ripple.height, 0.0);
 
-        Tweener.addTween(ripple, { _opacity: 0,
-                                   scale_x: finalScale,
+        Tweener.addTween(ripple, { opacity: 0,
+                                   delay: delay,
+                                   time: time,
+                                   transition: 'easeInQuad' });
+        Tweener.addTween(ripple, { scale_x: finalScale,
                                    scale_y: finalScale,
                                    delay: delay,
                                    time: time,
                                    transition: 'linear',
-                                   onUpdate: () => ripple.opacity = 255 * Math.sqrt(ripple._opacity),
                                    onComplete: () => ripple.visible = false });
     }